home *** CD-ROM | disk | FTP | other *** search
- unit singleform;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- StdCtrls;
-
- type
- TSingle = class (TObject)
- public
- class function NewInstance: TObject; override;
- procedure FreeInstance; override;
- end;
-
- TForm1 = class(TForm)
- Button1: TButton;
- Button2: TButton;
- Memo1: TMemo;
- procedure Button1Click(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure Button2Click(Sender: TObject);
- procedure FormDestroy(Sender: TObject);
- private
- s1: TSingle;
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.DFM}
-
- { TSingle }
-
- var
- Instance: TObject = nil;
- nCount: Integer = 0;
-
- procedure TSingle.FreeInstance;
- begin
- Dec (nCount);
- if nCount = 0 then
- begin
- inherited FreeInstance;
- Instance := nil;
- end;
- end;
-
- class function TSingle.NewInstance: TObject;
- begin
- if not Assigned (Instance) then
- Instance := inherited NewInstance;
- Result := Instance;
- Inc (nCount);
- end;
-
- procedure TForm1.Button1Click(Sender: TObject);
- var
- s2: TSingle;
- begin
- s2 := TSingle.Create;
- Memo1.Lines.Add ('s2: ' + IntToStr (Integer (Pointer (s2))));
- s2.Free;
- end;
-
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- S1 := TSingle.Create;
- Memo1.Lines.Add ('s1: ' + IntToStr (Integer (Pointer (s1))));
- end;
-
- procedure TForm1.Button2Click(Sender: TObject);
- var
- s3: TSingle;
- begin
- s3 := TSingle.Create;
- Memo1.Lines.Add ('s3: ' + IntToStr (Integer (Pointer (s3))));
- s3.Free;
- end;
-
- procedure TForm1.FormDestroy(Sender: TObject);
- begin
- s1.Free;
- end;
-
- end.
-